前言

STP是一个相对老旧的标准,RSTP虽然在STP的基础上进行了一定程度的优化,但是依然与STP一样存在一个较大的短板,即其基本原理是将环路中的某个或者某些接口进行阻塞,这将直接导致被阻塞的链路无法承载业务流量,从而造成网络资源的浪费,而且还有可能造成部分VLAN的报文无法转发。

MSTP在这方面进行了改良,MSTP增加了对vlan技术的识别,通过生成多棵树使得不同 VLAN 的流量可以在不同的链路上进行负载分担。

不过对于单个VLAN而言,始终存在某条或者某些链路无法承载其流量的情况。因此在现代园区网络中,还有许多其他技术或者解决方案已经被用于替代生成树技术。

这就是后面会介绍的smart link、堆叠与集群,甚至未来介绍的VRRP也可以算这类解决方案。

MSTP

为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP(Multiple Spanning Tree Protocol,多生成树协议)。

MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

MSTP是由RSTP升级而来的,RSTP持有的原理与特性MSTP都持有并且也一致,因此不再做介绍,本文着重介绍MSTP中的“M”(多实例、多生成树)。

此外,关于MSTP是如何基于实例/vlan进行生成树计算的,大体上也是基于BPDU进行比较优先级等信息,但碍于篇幅,本文也不做介绍。

概念

在以太网中部署MSTP协议后可实现如下功能:

  • 形成多棵无环路的树,解决广播风暴并实现冗余备份。
  • 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。

如果以某一个vlan为视角,则它眼中只存在一棵生成树。

MSTP可以将整个二层网络划分为多个MST域,并将每个MST域作为单台交换设备对待,在MST域间通过计算生成CST(Common Spanning Tree,公共生成树)。

在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例MSTI(Multiple Spanning Tree Instance)。

其中实例0的MSTI称为IST(Internal Spanning Tree,内部生成树),一般默认所有vlan都处于实例0内。

所有MST域的IST加上CST就构成一棵完整的生成树,即CIST(Common and Internal Spanning Tree,公共和内部生成树)。

一般来说,只使用一个MSTI域即可。

具体情况等我们介绍案例就能明白了,先看一下配置命令。

配置

  1. 执行命令system-view,进入系统视图。

  2. 执行命令stp enable,使能交换设备的生成树功能。

    默认情况下,设备的生成树功能处于启用状态。

  3. 执行命令stp mode mstp,配置交换设备生成树协议的工作模式为MSTP。

    默认情况下,交换设备的工作模式为MSTP。

  4. 执行命令stp region-configuration,进入MST域视图。

  5. 执行命令region-name name,配置MST域的域名。

    默认情况下,MST域的域名等于交换设备桥MAC的MAC地址。

  6. 选择执行以下两个步骤中的其中一个,配置多生成树实例与VLAN的映射关系。

    • 执行命令instance instance-id vlan { vlan-id1 [ to vlan-id2 ] },手动配置多生成树实例和VLAN的映射关系。
    • 执行命令vlan-mapping modulo modulo,配置多生成树实例和VLAN按照缺省算法自动分配映射关系。

    默认情况下,MST域内所有的VLAN都映射到生成树实例0。

    vlan-mapping modulo modulo是指VLAN ID减1后除以modulo值的余数再加1,即(VLAN ID-1)%modulo+1。通过此算法来分配到对应的实例中,即余数加1为几就将此VLAN分配到实例几中。

    当需要配置生成树实例与MUX VLAN间的映射关系时,建议同一个MUX VLAN下的主VLAN、互通型和隔离型从VLAN配置在同一个生成树实例下,否则可能导致部分环路。

    一般建议使用手动配置。

  7. (可选)执行命令revision-level level,配置MST域的MSTP修订级别。

    默认情况下,MST域的MSTP修订级别为0。

    MSTP是标准协议,各厂商设备的MSTP修订级别一般都默认为0。

    如果某厂商的设备不为0,为保持MST域内计算,在部署MSTP时,需要将各设备的MSTP修订级别修改为一致。

  8. 执行命令active region-configuration,激活MST域的配置,使以上配置生效。如果不执行本操作,以上配置无法生效。

    如果在激活后又修改了交换设备的MST域相关参数,可再次执行该命令以使修改后的参数生效。

    修改MST域配置时,在执行active region-configuration前,请先执行check region-configuration,确定未生效的域参数配置是否正确;在执行active region-configuration后,请关注设备上是否有激活失败的提示信息,如果有激活失败的提示信息,请重新进行MST域配置以确保配置正确。

如果要指定根桥与备份根桥:

  1. 执行命令system-view,进入系统视图。

  2. (可选)执行命令stp [ instance instance-id ] root primary,配置当前设备为根桥设备。

    配置后该设备优先级值自动为0,将不能更改设备优先级。

    如果不指定instance,则配置设备在实例0上为根桥设备。

  3. (可选)执行命令stp [ instance instance-id ] root secondary,配置当前交换设备为备份根桥设备。

    配置后该设备优先级值自动为4096,将不能更改设备优先级。

    如果不指定instance,则配置设备在实例0上为备份根桥设备。

案例

现使用四台交换机互联,链路上放行的vlan如图所示,再配置右侧的MSTP命令。

我们使用display stp brief命令检查一下当前MSTP的状态信息。

[MSTID]为前面配置的实例;[Role]为端口的状态,我们前面在STP/RSTP中学习过的[ROOT]:根端口、[DESI]:指定端口、[ALTE]:备用端口(阻塞端口)。

1
2
3
4
5
6
7
8
9
10
11
12
13
[SW1]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/3 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 DESI FORWARDING NONE
2 GigabitEthernet0/0/2 ROOT FORWARDING NONE
3 GigabitEthernet0/0/2 ROOT FORWARDING NONE
3 GigabitEthernet0/0/3 DESI FORWARDING NONE
4 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1
2
3
4
5
6
7
8
9
10
11
12
13
[SW2]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE
0 GigabitEthernet0/0/3 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 ROOT FORWARDING NONE
1 GigabitEthernet0/0/2 ALTE DISCARDING NONE
2 GigabitEthernet0/0/1 ALTE DISCARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/3 ROOT FORWARDING NONE
3 GigabitEthernet0/0/2 ROOT FORWARDING NONE
4 GigabitEthernet0/0/2 ALTE DISCARDING NONE
4 GigabitEthernet0/0/3 ROOT FORWARDING NONE
1
2
3
4
5
6
7
8
9
10
11
12
13
[SW3]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
0 GigabitEthernet0/0/3 ALTE DISCARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/3 ROOT FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
3 GigabitEthernet0/0/1 DESI FORWARDING NONE
3 GigabitEthernet0/0/2 ROOT FORWARDING NONE
3 GigabitEthernet0/0/3 ALTE DISCARDING NONE
4 GigabitEthernet0/0/1 DESI FORWARDING NONE
4 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1
2
3
4
5
6
7
8
9
10
11
12
13
[SW4]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/3 DESI FORWARDING NONE
3 GigabitEthernet0/0/1 DESI FORWARDING NONE
3 GigabitEthernet0/0/2 DESI FORWARDING NONE
4 GigabitEthernet0/0/1 DESI FORWARDING NONE
4 GigabitEthernet0/0/2 DESI FORWARDING NONE
4 GigabitEthernet0/0/3 DESI FORWARDING NONE

根据以上的状态信息,我们可以知道MSTP将拓扑生成出了以下五个MSTI:

实例0的MSTI树用于未划vlan或者未处于其他实例中的vlan的数据传输。

实例1为vlan10使用的,实例2为vlan20使用的,实例3为vlan30使用的,实例4为vlan40使用的。

Smart Link和Monitor Link

虽然MSTP很好用,但它作为生成树协议,它还有一个短板——其收敛速度依旧有限,不能尽量保证业务通信无感知,接下来介绍一个更为有效的技术。

Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。

Smart Link常用于双上行组网(也就是成“v”状,一台设备连接了两台设备),提供可靠高效的备份和快速的切换机制。

Smart Link技术有以下优点:

  • 能够实现在双上行组网的两条链路正常情况下,一条链路处于转发状态,而另一条处于阻塞待命状态,从而可避免环路的不利影响。
  • 配置和使用更为简洁,便于用户操作。
  • 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度地保证了数据的正常转发。

在一些组网中,Smart Link无法监视到上行接口的状态,从而导致拓扑协议无法进行链路切换。

Monitor Link组也叫监控链路组,由上行接口和下行接口共同组成;它通过监控设备的上行接口,根据其Up/Down状态的变化来触发下行接口Up/Down状态的变化

因而可以在相连的上行设备上配置Monitor Link,通过监控上行链路对下行链路进行同步设置,达到上行链路故障迅速传达给下行设备,从而触发下游设备上的Smart Link进行链路的切换,防止长时间因上行链路故障而出现流量丢失。

如图所示,对于SW4来说,配置连接SW2与SW3的两台链路为一个Smart Link。实现使用主链路通信,备用链路堵塞;当SW4检查到主链路故障时,切换为备用链路。

但如果故障点在SW1与SW2的链路上(假设SW2与SW4的链路为Smart Link的主链路),那么SW4是无法检查到该故障,依旧会使用主链路进行通信。

而在SW2与SW3上配置Monitor Link后,当它们发现与SW1的链路发生故障后,就会将与SW4相连的接口关闭,从而让SW4发现链路故障,进而触发Smart Link的主备切换。

如果在同一个组网中,同一时刻双上行链路中只有一条处于转发状态,另一条链路不承载流量,则链路利用率只有50%。

Smart Link支持负载分担实例,可以配置指定实例对应的VLAN数据通过备用链路进行转发(其他vlan流量从主链路转发),使得主链路和备份链路承载不同VLAN数据流量的转发,达到负载分担的目的。

配置

注意:如果要配置Smart Link,要先进去对应的接口下执行命令stp disable关闭当前接口的STP功能。

如果不关闭接口的STP功能,接口将无法加入Smart Link组。

基本功能配置:

  1. 执行命令system-view,进入系统视图。

  2. 执行命令smart-link group group-id,创建并进入Smart Link组视图。设备最多支持创建16个Smart Link组。

  3. (可选)执行命令protected-vlan reference-instance { instance-id1 [ to instance-id2 ] },配置Smart Link组保护实例。

    配置了Smart Link组的保护实例之后,Smart Link功能只对保护实例中映射的VLAN数据有效。

    如果不配置Smart Link组绑定保护实例,则Smart Link功能对所有VLAN数据有效。

  4. 执行命令port interface-type interface-number master,将指定接口加入Smart Link组,并配置为主接口。

  5. 执行命令port interface-type interface-number slave,将指定接口加入Smart Link组,并配置为从接口。

    一个Smart Link组包括一个主接口和一个从接口。

  6. (可选)执行命令smart-link hold-time hold-time,配置Smart Link倒换的延时时间。

    默认情况下,延时时间为0秒,即立刻倒换。

  7. (可选)执行命令restore enable,使能Smart Link组的回切功能。

    默认情况下,Smart Link组回切功能处于关闭状态。

    当Smart Link组中主链路出现故障时,会自动倒换到备链路。

    当原主链路故障恢复后,为了保持流量稳定,它将维持在阻塞状态,不进行抢占。

  8. (可选)执行命令timer wtr wtr-time,设置Smart Link组回切时间。

    默认情况下,Smart Link组回切时间为60秒。

  9. 执行命令smart-link enable,启用Smart Link组功能。

负载分担配置:

  1. 执行命令system-view,进入系统视图。

  2. 执行命令stp region-configuration,进入MST域视图。

  3. 执行命令instance instance-id vlan { vlan-id1 [ to vlan-id2 ] },配置实例和VLAN的映射关系。

    默认情况下,所有的VLAN都映射到Instance 0。且Instance 0为默认配置,不需要创建。

  4. 执行命令active region-configuration,激活MST域的配置。

  5. 执行命令quit,返回系统视图。

  6. 执行命令smart-link group group-id,进入Smart Link组视图。

  7. 执行命令load-balance instance { instance-id1 [ to instance-id2 ] } slave,用来配置该实例绑定的VLAN报文从备用接口发送,实现负载分担方式。

  1. 执行命令system-view,进入系统视图。

  2. 执行命令monitor-link group group-id,创建并进入Monitor Link组视图。

  3. 执行命令port interface-type interface-number uplink ,配置单接口为Monitor link组的上行接口。

    或者执行命令smart-link group group-id uplink,配置Smart Link组为Monitor Link组的上行链路。

    如果要将Smart Link组加入到Monitor Link组中,需要先将Monitor Link组中已经存在的上行链路接口删除。

  4. 执行命令port interface-type interface-number downlink [ downlink-id ] ,配置单接口为Monitor link组的下行接口。

  5. (可选)执行命令timer recover-time recover-time,配置自动回切时间。

    默认情况下,Monitor Link组的回切功能处于启用状态,且默认回切时间为3秒。

案例

以图中拓扑为例,SW4将上行到SW2与SW3的链路加入Smart Link组,并选择SW2为主链路。

为了避免上行交换机的上行链路故障,SW4无法发现并切换链路;在上行交换机上配置Monitor Link。

另外SW的上行链路也有两条,因此也配置为Smart Link组。

先配置SW4的Smart Link:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Huawei>system-view 
[Huawei]sysname SW4
#关闭接口的STP功能
[SW4]interface G0/0/1
[SW4-GigabitEthernet0/0/1]stp disable
[SW4]interface G0/0/2
[SW4-GigabitEthernet0/0/2]stp disable
[SW4-GigabitEthernet0/0/2]q
#创建Smart Link组,配置主备链路
[SW4]smart-link group 1
[SW4-smlk-group1]port GigabitEthernet 0/0/1 master
[SW4-smlk-group1]port GigabitEthernet 0/0/2 slave
[SW4-smlk-group1]restore enable
[SW4-smlk-group1]timer wtr 30
[SW4-smlk-group1]smart-link enable
[SW4-smlk-group1]q

配置SW3的Monitor Link:

1
2
3
4
5
<Huawei>system-view 
[Huawei]sysname SW3
[SW3]monitor-link group 1
[SW3-mtlk-group1]port G0/0/1 uplink
[SW3-mtlk-group1]port G0/0/2 downlink

配置SW2的Smart Link和Monitor Link:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Huawei>system-view 
[Huawei]sysname SW2
#关闭接口STP功能
[SW2]interface G0/0/3
[SW2-GigabitEthernet0/0/3]stp disable
[SW2-GigabitEthernet0/0/3]Q
[SW2]interface G0/0/1
[SW2-GigabitEthernet0/0/1]stp disable
[SW2-GigabitEthernet0/0/1]Q
#创建Smart Link组,配置主备链路
[SW2]smart-link group 1
[SW2-smlk-group1]port G0/0/3 master
[SW2-smlk-group1]port G0/0/1 slave
[SW2-smlk-group1]smart-link enable
[SW2-smlk-group1]Q
#配置Monitor Link
[SW2]monitor-link group 1
[SW2-mtlk-group1]smart-link group 1 uplink
[SW2-mtlk-group1]port G0/0/2 downlink

堆叠与集群

本文仅接受堆叠与集群的概念,暂不介绍具体的原理与配置。

堆叠Stack是指将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上变成一台交换设备,作为一个整体参与数据转发。

而集群CSS (Cluster Switch System)与堆叠类似,只是集群是特指用于框式交换机上的技术。

该拓扑只是介绍概念,实际现网不会这么连接,因为如果交换机A故障了,那么交换机A下的用户就断网了。

一般来说,堆叠都是使用在汇聚层/核心层交换机上,下行的交换机连接着堆叠组的交换机;这样配置堆叠后,再使用链路聚合即可达到冗余备份与带宽提高的目标。

整体上看,在中大型企业网络结构中,堆叠/集群的应用如下:

堆叠与集群是属于交换设备上的,在路由设备上也有类似的方案——VRRP,这个我们之后单独介绍。